package array.螺旋矩阵;

/**
 * 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
 *
 */
public class 螺旋矩阵II {
    public static void main(String[] args) {
        int[][] ints = generateMatrix(25);
        for (int[] anInt : ints) {
            for (int i : anInt) {
                System.out.print(i+"\t");
            }
            System.out.println();
            System.out.println();
        }
    }
    public static int[][] generateMatrix(int n) {
        int[][] a=new int[n][n];

        //循环次数
        int loop=n/2;
        int startX=0,startY=0;
        int offset=1;
        int count=1;
        //奇数n时，需要给最中间元素赋值
        int mid=n/2;
        while (loop>0){
            int i=startX;
            int j=startY;
            //左闭右开  上行
            for(;j<startX+n-offset;j++)
            {
                a[startX][j]=count++;
            }
            //右列
            for(;i<startY+n-offset;i++){
                a[i][j]=count++;
            }
            //下行
            for(;j>startX;j--){
                a[i][j]=count++;
            }
            //左列
            for(;i>startY;i--){
                a[i][startY]=count++;
            }
            startX++;
            startY++;
            offset+=2;
            loop--;
        }
        if(n%2==1)
            a[mid][mid]=count;
        return a;
    }
}
